集体通信函数
以下 MCCL API 提供了一些常用的集体操作。
mcclAllReduce
mcclResult_t mcclAllReduce(const void* sendbuff, void* recvbuff, size_t count, mcclDataType_t datatype, mcclRedOp_t op, mcclComm_t comm, musaStream_t stream)
使用 op 操作将 sendbuff 中长度为 count 的数据数组进行归约,并将结果的相同副本保存在每个 recvbuff 中。
如果 sendbuff == recvbuff,则会发生就地(in-place)操作。
相关链接:AllReduce。
mcclBroadcast
mcclResult_t mcclBroadcast(const void* sendbuff, void* recvbuff, size_t count, mcclDataType_t datatype, int root, mcclComm_t comm, musaStream_t stream)
从root rank 的sendbuff复制count个元素到所有 rank 的recvbuff。
sendbuff仅在root rank 上使用,其他 rank 上被忽略。
如果sendbuff == recvbuff,则会发生就地(in-place)操作。
mcclResult_t mcclBcast(void* buff, size_t count, mcclDataType_t datatype, int root, mcclComm_t comm, musaStream_t stream)
mcclBroadcast的旧版就地版本,类似于 MPI_Bcast,弃用。调用
mcclBcast(buff, count, datatype, root, comm, stream)
等同于
mcclBroadcast(buff, buff, count, datatype, root, comm, stream)
相关链接:Broadcast。
mcclReduce
mcclResult_t mcclReduce(const void* sendbuff, void* recvbuff, size_t count, mcclDataType_t datatype, mcclRedOp_t op, int root, mcclComm_t comm, musaStream_t stream)
将 sendbuff 中长度为 count 的数据数组归约到 root rank 的recvbuff上,使用op操作。recvbuff仅在root rank 上使用,其他 rank 上被忽略。
如果sendbuff == recvbuff,则会发生就地(in-place)操作。
相关链接:Reduce。
mcclAllGather
mcclResult_t mcclAllGather(const void* sendbuff, void* recvbuff, size_t sendcount, mcclDataType_t datatype, mcclComm_t comm, musaStream_t stream)
从所有GPU收集sendcount个值,并将结果的相同副本保存在每个recvbuff中,来自 rank i的数据位于偏移i*sendcount处。
注意:这假设接收计数等于nranks*sendcount,这意味着recvbuff的大小至少应为nranks*sendcount个元素。
如果sendbuff == recvbuff + rank * sendcount,则会发生就地(in-place)操作。
相关链接:AllGather。
mcclReduceScatter
mcclResult_t mcclReduceScatter(const void* sendbuff, void* recvbuff, size_t recvcount, mcclDataType_t datatype, mcclRedOp_t op, mcclComm_t comm, musaStream_t stream)
使用 op 操作将所有 GPU 上的 sendbuff 数据进行归约,并将归约结果分散到设备上,使得 rank i 的 recvbuff 包含结果的第 i 个区块。
注意:这假设发送计数等于 nranks*recvcount,这意味着 sendbuff 应该至少有 nranks*recvcount 个元素的大小。
如果 recvbuff == sendbuff + rank * recvcount,则会发生就地(in-place)操作。
相关链接:ReduceScatter。

